From 0cf9f70ccd0ed212b2198527c15774c3b94e29f2 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 15 Nov 2016 07:06:57 +0100 Subject: [PATCH] snapshot: Convert box gadget Makes spinbuttons have text again! --- gtk/gtkboxgadget.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gtk/gtkboxgadget.c b/gtk/gtkboxgadget.c index e312a2aee0..555bb17ef8 100644 --- a/gtk/gtkboxgadget.c +++ b/gtk/gtkboxgadget.c @@ -519,6 +519,35 @@ gtk_box_gadget_draw (GtkCssGadget *gadget, return FALSE; } +static gboolean +gtk_box_gadget_snapshot (GtkCssGadget *gadget, + GtkSnapshot *snapshot, + int x, + int y, + int width, + int height) +{ + GtkBoxGadgetPrivate *priv = gtk_box_gadget_get_instance_private (GTK_BOX_GADGET (gadget)); + GtkWidget *owner = gtk_css_gadget_get_owner (gadget); + guint i; + + for (i = 0; i < priv->children->len; i++) + { + guint draw_index = priv->draw_reverse ? priv->children->len - 1 - i : i; + GtkBoxGadgetChild *child = &g_array_index (priv->children, GtkBoxGadgetChild, draw_index); + + if (GTK_IS_WIDGET (child->object)) + gtk_container_snapshot_child (GTK_CONTAINER (owner), GTK_WIDGET (child->object), snapshot); + else + gtk_css_gadget_snapshot (GTK_CSS_GADGET (child->object), snapshot); + } + + if (priv->draw_focus && gtk_widget_has_visible_focus (owner)) + return TRUE; + + return FALSE; +} + static GskRenderNode * gtk_box_gadget_get_render_node (GtkCssGadget *gadget, GskRenderer *renderer, @@ -576,6 +605,7 @@ gtk_box_gadget_class_init (GtkBoxGadgetClass *klass) gadget_class->get_preferred_size = gtk_box_gadget_get_preferred_size; gadget_class->allocate = gtk_box_gadget_allocate; gadget_class->draw = gtk_box_gadget_draw; + gadget_class->snapshot = gtk_box_gadget_snapshot; gadget_class->get_render_node = gtk_box_gadget_get_render_node; gadget_class->has_content = gtk_box_gadget_has_content; } -- 2.30.2